# 作者： 李泉志
# 2025年01月05日17时52分秒
# 2947029073@qq.com

# 有8个整数，其中有3个数出现了两次，2个数出现了一次， 找出出现了一次的那2个数。
def func1(nums):
    for i in nums:
        if nums.count(i) == 1:
            print(i)


def func2(nums):
    # 把出现了1次的2个数字分别放两个堆，每个堆各自异或
    result = 0
    for i in nums:
        result ^= i
    print(result)

    # 用result得到flag
    flag = result & -result  # 得到result最低位的1的位置，也就是两数最低位不同的位置
    result1, result2 = 0, 0
    for i in nums:
        if flag & i:  # 若i的最低位为1，则放入result1，否则放入result2
            result1 ^= i
        else:
            result2 ^= i
    print(result1, result2)


if __name__ == '__main__':
    num = [1, 2, 3, 2, 4, 1, 3, 6]
    # func1(num)
    func2(num)
